Recent and continuing increases in computer processing power and speed, in the speed and capacity of primary memory, and in the size and complexity of computer software has resulted in the need for faster operating, larger capacity secondary memory storage devices; magnetic disks forming the most common external or secondary memory storage means utilized in present day computer systems. Unfortunately, the rate of improvement in the performance of large magnetic disks has not kept pace with processor and main memory performance improvements. However, significant secondary memory storage performance and cost improvements may be obtained by the replacement of single large expensive disk drives with a multiplicity of small, inexpensive disk drives interconnected in a parallel array, which to the host appears as a single large fast disk.
Several disk array design alternatives were presented in an article titled "A Case for Redundant Arrays of Inexpensive Disks (RAID)" by David A. Patterson, Garth Gibson and Randy H. Katz; University of California Report No. UCB/CSD 87/391, December 1987. The article, incorporated herein by reference, discusses disk arrays and the improvements in performance, reliability, power consumption and scalability that disk arrays provide in comparison to single large magnetic disks.
An additional disk array arrangement, referred to as parity striping, is presented in an article titled "Parity Striping of Disc Arrays: Low-Cost Reliable Storage with Acceptable Throughput" by Jim Gray, Bob Horst and Mark Walker; Tandem Computers, Inc., Tandem Technical Report No. 90.2, January 1990, also incorporated herein by reference.
Disk array architectures necessarily include several data busses for transferring data between the host system and the individual disk drives within the disk array. Each of these data busses may be connected to receive data from one of several data sources such as the host system, one or more of the array disk drives, a parity generation circuit, temporary storage devices, or diagnostic data sources. However, only one source must be allowed to drive a multiple source bus at any instant, otherwise corrupted data will appear on the bus. Damage may also be inflicted upon one or more of the data sources should more than one source attempt to drive the bus. Means must therefore be provided to prevent the possibility that two or more source devices will attempt to drive an array bus contemporaneously, or to detect such a situation should it occur.